﻿#pragma once
#include <string>
#include <list>
#include "baseoption_global.h"
#include <QString>

// 配置管理，这个配置跟当前程序在一个目录
class BASEOPTION_EXPORT OptionManager
{
public:
	static OptionManager &Instance();
	// 返回工作目录
	const std::string &GetWorkDir();
	// 设置工作目录
	void SetWorkDir(const std::string &pworkDir);
	// 设置自定义配置
	void SetDefOption(const std::string &pName, const std::string &pVal);
	// 返回自定义配置
	std::string GetDefOption(const std::string &pName, const std::string &pDefVal);
	// 设置配置列表
	void SetDefOption(const std::string &pName, const std::list<std::string> &pValList);
	// 返回配置列表
	void GetDefOption(const std::string &pName, std::list<std::string> &outValList);
	// 行情数据目录
	std::string GetMarketDataDir();
	// 基础K线目录
	std::string GetBaseKItemDir();
	// 买卖结果文件
	std::string GetOrderFile();
	// 策略配置文件
	std::string GetStrategySettingFile();
	// 策略目录
	std::string GetStrategyDir();
	// 合约目录
	std::string GetSymbolDir();
	// 得到自动生成的工作目录
	std::string GetGenDir();
	// 返回用户定义目录
	std::string GetUsrDir();
	// 确保目录存在
	void MakeSureDir(const std::string &pDir);
	// ctp行情登录账号配置
	std::string GetCTPMDAccountSettingFile();
	// ctp交易账户登录配置
	std::string GetCTPTradeAccountSettingFile();
private:
	OptionManager();
	~OptionManager();

	
	std::string m_workspaceDir;
};
